package user

import (
	"5title_gin/common/queryPage"
	"5title_gin/global"
	"5title_gin/internal/api/middleware"
	"5title_gin/internal/model"
	"5title_gin/internal/model/user"
	"5title_gin/pkg/utils/res"
	"github.com/gin-gonic/gin"
)

// UserListView 用户列表查询
// @Tags 用户管理
// @Summary 用户列表查询
// @Description 用户列表查询
// @Param token header string true "token"
// @Param order query string false "排序方式"
// @Param page query int false "页码"
// @Param pageSize query int false "每页大小"
// @Param search query string false "搜索关键字"
// @Router /api/users/list [get]
// @Produce json
// @Success 200 {object} res.Response
func (UserApi) UserListView(c *gin.Context) {
	cr := middleware.GetBind[model.PageInfo](c)

	// 1. 分页查询用户列表
	list, total, _ := queryPage.QueryList(user.UserModel{}, queryPage.QueryOption{
		PageInfo: cr,
		Likes:    []string{"username", "nickname"},
		Debug:    true,
	})

	// 2. 提取所有需要翻译的 DeptID
	deptIDs := make([]uint, 0)
	for _, u := range list {
		if u.DeptID > 0 {
			deptIDs = append(deptIDs, u.DeptID)
		}
	}

	// 3. 查询部门名称（批量查询）
	deptMap := make(map[uint]string)
	if len(deptIDs) > 0 {
		var depts []struct {
			ID       uint   `gorm:"column:id"`
			DeptName string `gorm:"column:dept_name"` // 这里修正字段
		}
		global.DB.Table("sys_depts").Select("id, dept_name").Where("id IN ?", deptIDs).Find(&depts)

		// 组装映射关系
		for _, dept := range depts {
			deptMap[dept.ID] = dept.DeptName
		}
	}

	// 4. 转换成 UserVO 结构体并填充 DeptName89h90
	var userVOList []user.UserVo
	for _, u := range list {
		userVOList = append(userVOList, user.UserVo{
			UserModel: u,
			DeptName:  deptMap[u.DeptID], // 映射部门名称
		})
	}

	// 5. 返回数据
	res.OkWithList(userVOList, total, c)
}

// UpdateUserInfo 更新用户信息
func (UserApi) UpdateUserInfo(c *gin.Context) {

}
